function Get-ValueDescription {
    [CmdletBinding()]
    param (
        [Parameter(Position = 0)][System.Object]$var
    )
    
    if ($null -eq $var) {
        return "Value is null."
    }

    $varType = $var.GetType()

    if ($varType.IsArray) {
        if ($var.Count -eq 0) {
            return "Value is an empty array."
        } else {
            return "Value is an array with $($var.Count) items."
        }
    } elseif ($varType.IsEnum) {
        return "Value is an enum."
    } elseif ($varType.Name -eq "String") {
        if ($var -eq '') {
            return 'Value is an empty string.'
        } elseif ($var -match '^\s*$') {
            return "Value is just bunch of whitespaces."
        } else {
            return 'Value is just a normal string.'
        }
    } else {
        return "Value is a $($varType.Name)"
    }
}